/**
 * 给定一个整数数组，找出未出现的最小整数
 */
/**
 * 先找出最大值，再根据最大值来
 * @param {*} arr 
 * @returns 
 */
function findMin(arr = []) {
    if (!arr.length) return -1;

    let narr = [];
    let max = 0;
    for (let i = 0; i < arr.length; i++) {
        if (max < arr[i]) {
            max = arr[i];
        }
    }
    for (let i = 0; i < max; i++) {
        narr[i] = 0;
    }
    for (let i = 0; i < arr.length; i++) {
        narr[arr[i] - 1] = 1;
    }
    let cur = 0;
    for (let i = 0; i < max; i++) {
        if (narr[i] === 0) {
            cur = i;
            break;
        }
    }
    return cur + 1;


    // 先进行排序再过滤0和负数
    // let narr = arr.sort((a, b) => a - b).filter(m => m > 0);
    // // console.log(narr);
    // let left = 0;
    // let right = narr.length - 1;
    // // let mid = 0;
    // if (!narr.length) return 1;
    // if (narr[left] > 1) {
    //     return 1;
    // }
    // while (left < right) {
    //     if (arr[left + 1] - arr[left] > 1) {
    //         return arr[left] + 1;
    //     }
    //     left++;
    // }
    // return arr[right] + 1;

}
console.log(findMin([1, 2, 6, 7, 8, 9, 11, 12]));